The networked computing environment (e.g., cloud computing environment) is an enhancement to the predecessor grid environment, whereby multiple grids and other computation resources may be further enhanced by one or more additional abstraction layers (e.g., a cloud layer), thus making disparate devices appear to an end-consumer as a single pool of seamless resources. These resources may include such things as physical or logical computing engines, servers and devices, device memory, and storage devices, among others.
Systems that maintain a large volume of data may partition (e.g., shard) data across many physical or virtual machines in order to better distribute workloads. One technique is to select a “shard key” that is specified by a database administrator to evenly distribute the data. One way to shard data is by the first letter of an object's name. For example, in a system of three servers that support a database, the system might store objects based upon a name that starts with the letters A-G on the first system, H-R on the second system, and S-Z on the third system. However, challenges may exist in choosing a shard key and appropriate ranges for values of that shard key on a system. In the example above, it may be logical to distribute values by dividing the alphabet into three more or less equal groups of letters (9 letters, 9 letters, and 8 letters), but in reality it may be the case that there are several times more objects that start with the letter S than the letter Q. Such a configuration may result in an excessive volume of data being stored on one partition and/or or an overwhelming workload being driven to a particular server.